package src.backtracking_algorithm;

import java.util.ArrayList;
import java.util.List;

/**
 * @author starsea
 * @date 2024-08-18 14:51
 */

public class Test03 {
    static class TreeNode
    {
        int val;
        TreeNode left;
        TreeNode right;

        public TreeNode(int val) {
            this.val = val;
        }
    }

    public static void main(String[] args) {
        TreeNode node1=new TreeNode(1);
        TreeNode node2=new TreeNode(2);
        TreeNode node3=new TreeNode(3);
        TreeNode node4=new TreeNode(4);
        TreeNode node5=new TreeNode(5);
        TreeNode node6=new TreeNode(6);
        node1.left=node2;
        node1.right=node3;
        node2.left=node4;
        node2.right=node5;
        node3.left=node6;

        int c=sumNumbers(node1);
    }
    static int sum = 0;
   static List<Integer> ret;

    public static int sumNumbers(TreeNode root) {
        ret = new ArrayList<>();
        dfs(root);
        int ans = 0;
        for (int i = 0; i < ret.size(); i++) {
            ans += ret.get(i);
        }
        return ans;
    }

    public static void dfs(TreeNode root) {
        if (root==null) {
            ret.add(sum);
            return;
        }
        sum = sum * 10 + root.val;
        dfs(root.left);
        dfs(root.right);
        sum = (sum - root.val) / 10;
    }
}
